A partial response maximum-likelihood (PRML) channel with Viterbi detection is a high performance architecture used for detection of a signal e.g. read from a magnetic recording medium. PRML permits magnetic transitions to be placed closer to one another than heretofore (increased intersymbol interference) and thereby enables higher magnetic transition recording densities than have been obtained with prior peak detection approaches. In PRML the magnetic recording channel is equalized to a partial response channel with known intersymbol interference. Then, a Viterbi detector is used to determine the most likely recorded sequence. Noise added into the partial response channel could cause detection errors at the output of the Viterbi detector.
User data to be recorded upon a magnetic storage medium is typically recorded in substantial blocks, each block comprising a predetermined number of bits such as approximately four thousand information bits. In order to protect against channel/detector errors, an outer error correction code (ECC) process, typically implementing a Reed-Solomon code, considers the sequence of these information bits to comprise a single ECC code word, or several ECC interleaved code words. The outer ECC process calculates and appends a predetermined number of ECC check bytes onto the user data block or block ECC interleave. On playback from the recording channel, the ECC check bytes are analyzed in order to detect and correct one or several error burst sequences within the user data block or interleave. It may be the case, particularly at high recording densities, that so many errors are made in the detection process that the outer ECC process is overwhelmed and becomes incapable of locating and/or correcting all of the error bursts.
Adding an inner or embedded channel code to each ECC protected user data block can improve channel detection performance by reducing the number of detector errors reaching an input of the ECC decoding and correction process. Implementing a channel code that provides performance gain at high code rate has previously resulted in a Viterbi detector requiring a very complex implementation, since prior Viterbi detectors have been matched to both the channel characteristics and to the channel code constraints.
The Viterbi algorithm is an iterative process of keeping track of the path with a smallest accumulated metric leading to each state of a detection trellis (graph). The metrics of all of the paths leading into a particular state are calculated and compared. Then, the path with the smallest metric is selected as the survivor path. In this manner all paths which can not be part of the minimum metric path through the trellis are systematically eliminated. The survivor path to each state is stored in a path memory. Given that the path memory is made sufficiently long, all of the survivor paths will diverge from a single path within the span of the path memory. The single path from which all of the current survivor paths diverge is the minimum metric path. The input sequence associated with this path appears at the output of the Viterbi detector.
There are two forms of prior art which are generally relevant to the present invention. The first form of prior art and the thing that has most commonly been employed in magnetic recording is a simple run length coding process that is not meant to detect errors (a code which ensures that magnetic flux transitions happen sufficiently frequently in order to provide reliable channel timing and gain control based on the incoming coded data pattern). This is the most common prior art. And in this first case the Viterbi is not necessarily matched to the code, because the code is not providing error detection or correction capability. The other form of prior art employs a code that can detect and correct errors, and in this second example the number of states and path lengths required of a Viterbi detector trellis are matched to both the channel and the code, see e.g. R. Karabed and P. Siegel, “Matched Spectral-Null Codes for Partial-Response Channels”, IEEE Transactions on Information Theory, Vol. 37, No. 3, May 1991, pp. 818–855.
The squared Euclidean distance between two noiseless paths along the detector trellis is equal to the sum of the squares of the differences between the ideal samples on the two paths. In the case of independent and identically distributed Gaussian noise added to the channel, the most-likely errors made by the Viterbi detector correspond to mistaking two sequences that are separated by the minimum distance. As a consequence the minimum squared Euclidean distance can be used to estimate the probability of error at the output of the Viterbi detector.
Channel noise can cause errors at the output of the Viterbi detector. Errors may be more likely to occur at higher magnetic recording densities. User information may be more reliably recovered from the high density (high data rate) magnetic recording channel by incorporating an appropriately designed channel code. In the past, many channel codes have not achieved significant performance gains because of low code rate and because the code may not have been optimized for the error-events or error patterns that are most likely to occur within a particular partial response channel. In the early development of partial response signaling, maximum likelihood detection within a recording channel, channel code rates were typically 8/9. Later codes had higher rates, such as 16/17 and 24/25. At the same time, channel developers were considering detector trellis codes which had the desirable property of detecting and correcting error-events. Early trellis codes had a rate of 8/10 or 16/19, for example. While rates were slowly increasing for trellis codes, they generally had a lower code rate than more efficient codes which were not useful for detecting or correcting error-events.
One example of a Viterbi detector which matched a modulo-N trellis code on a partial response channel is described in Fredrickson U.S. Pat. No. 5,257,272, the disclosure thereof being incorporated herein by reference. In that patented approach a Viterbi detector replicated a conventional trellis structure for the channel N times. The N copies of the channel response trellis were interconnected such that a predetermined function associated each state in the trellis with a particular integer value modulo-N. The number N and the predetermined function were selected in accordance with channel detection and coding constraints, such that diverging erroneous sequences of minimum distance led to detector states which were distinct. The detector trellis was time-varying such that only certain values of the preselected function were allowed every m bits. The time-variation was said to assure that there were no minimum distance extensions of erroneous sequences beyond a predetermined length. One drawback of the Fredrickson '272 patent approach was its relatively complex Viterbi detector structure.
The number of states in a Viterbi detector matched only to the channel is equal to M=2L−1, where L is the length of the partial response, i.e. the span of non-zero terms. For a (1−D) dicode channel the number of Viterbi states is 2. For a (1−D)(1+D)2 EPR4 channel, the number of states is 8. Channels that provide better performance at higher densities tend to have even more states. When a modulo-7 code is used on a channel with M states, the combined Viterbi detector has 7M states. As the number of states in the channel increases, the complexity of the combined detector increases seven-fold.
An example of a Viterbi detector followed by a post-processor is described in co-inventor Kelly Knudson Fitzpatrick's U.S. Pat. Nos. 5,521,945 and 5,689,532, both of which are commonly assigned with the present patent. The disclosures of the '945 and '532 patents are incorporated herein by reference thereto. The described post-processor employed certain information from a Viterbi detector optimized to a PR4 target spectrum in order to produce an estimated input sequence which approached a maximum likelihood sequence estimate for an EPR4 channel target.
A hitherto unsolved need has remained for a reduced-complexity detection architecture and method for detecting information in a partial response channel characterized by more complex transfer polynomials and use of error detecting channel codes having high code rates, and by using a Viterbi detector tuned to the channel transfer function followed by a post-processor responsive to the channel code and having a relatively simplified implementation.